{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "source": [
    "import scipy as sci\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n"
   ],
   "outputs": [],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "source": [
    "def x(n):\n",
    "    return np.sin(0.2 * n * np.pi)\n",
    "\n",
    "def phi(n, k, N):\n",
    "    return np.exp(2j * np.pi * k * n / N) / N\n",
    "\n",
    "N = 31\n",
    "H = np.array([[phi(n, k, N) for k in range(N)] for n in range(N)])\n",
    "print(H)\n",
    "# print(H_star)\n",
    "# print(H_star == H)"
   ],
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "[[ 0.03225806+0.j          0.03225806+0.j          0.03225806+0.j\n",
      "   0.03225806+0.j          0.03225806+0.j          0.03225806+0.j\n",
      "   0.03225806+0.j          0.03225806+0.j          0.03225806+0.j\n",
      "   0.03225806+0.j          0.03225806+0.j          0.03225806+0.j\n",
      "   0.03225806+0.j          0.03225806+0.j          0.03225806+0.j\n",
      "   0.03225806+0.j          0.03225806+0.j          0.03225806+0.j\n",
      "   0.03225806+0.j          0.03225806+0.j          0.03225806+0.j\n",
      "   0.03225806+0.j          0.03225806+0.j          0.03225806+0.j\n",
      "   0.03225806+0.j          0.03225806+0.j          0.03225806+0.j\n",
      "   0.03225806+0.j          0.03225806+0.j          0.03225806+0.j\n",
      "   0.03225806+0.j        ]\n",
      " [ 0.03225806+0.j          0.03159774+0.0064935j   0.0296438 +0.01272116j\n",
      "   0.02647624+0.01842801j  0.02222474+0.02338041j  0.01706336+0.02737562j\n",
      "   0.0112034 +0.03025007j  0.00488477+0.03188607j -0.00163384+0.03221666j\n",
      "  -0.00808557+0.03122829j -0.01420626+0.02896144j -0.01974535+0.02550889j\n",
      "  -0.02447607+0.02101202j -0.02820473+0.0156549j  -0.03077869+0.00965687j\n",
      "  -0.03209256+0.00326349j -0.03209256-0.00326349j -0.03077869-0.00965687j\n",
      "  -0.02820473-0.0156549j  -0.02447607-0.02101202j -0.01974535-0.02550889j\n",
      "  -0.01420626-0.02896144j -0.00808557-0.03122829j -0.00163384-0.03221666j\n",
      "   0.00488477-0.03188607j  0.0112034 -0.03025007j  0.01706336-0.02737562j\n",
      "   0.02222474-0.02338041j  0.02647624-0.01842801j  0.0296438 -0.01272116j\n",
      "   0.03159774-0.0064935j ]\n",
      " [ 0.03225806+0.j          0.0296438 +0.01272116j  0.02222474+0.02338041j\n",
      "   0.0112034 +0.03025007j -0.00163384+0.03221666j -0.01420626+0.02896144j\n",
      "  -0.02447607+0.02101202j -0.03077869+0.00965687j -0.03209256-0.00326349j\n",
      "  -0.02820473-0.0156549j  -0.01974535-0.02550889j -0.00808557-0.03122829j\n",
      "   0.00488477-0.03188607j  0.01706336-0.02737562j  0.02647624-0.01842801j\n",
      "   0.03159774-0.0064935j   0.03159774+0.0064935j   0.02647624+0.01842801j\n",
      "   0.01706336+0.02737562j  0.00488477+0.03188607j -0.00808557+0.03122829j\n",
      "  -0.01974535+0.02550889j -0.02820473+0.0156549j  -0.03209256+0.00326349j\n",
      "  -0.03077869-0.00965687j -0.02447607-0.02101202j -0.01420626-0.02896144j\n",
      "  -0.00163384-0.03221666j  0.0112034 -0.03025007j  0.02222474-0.02338041j\n",
      "   0.0296438 -0.01272116j]\n",
      " [ 0.03225806+0.j          0.02647624+0.01842801j  0.0112034 +0.03025007j\n",
      "  -0.00808557+0.03122829j -0.02447607+0.02101202j -0.03209256+0.00326349j\n",
      "  -0.02820473-0.0156549j  -0.01420626-0.02896144j  0.00488477-0.03188607j\n",
      "   0.02222474-0.02338041j  0.03159774-0.0064935j   0.0296438 +0.01272116j\n",
      "   0.01706336+0.02737562j -0.00163384+0.03221666j -0.01974535+0.02550889j\n",
      "  -0.03077869+0.00965687j -0.03077869-0.00965687j -0.01974535-0.02550889j\n",
      "  -0.00163384-0.03221666j  0.01706336-0.02737562j  0.0296438 -0.01272116j\n",
      "   0.03159774+0.0064935j   0.02222474+0.02338041j  0.00488477+0.03188607j\n",
      "  -0.01420626+0.02896144j -0.02820473+0.0156549j  -0.03209256-0.00326349j\n",
      "  -0.02447607-0.02101202j -0.00808557-0.03122829j  0.0112034 -0.03025007j\n",
      "   0.02647624-0.01842801j]\n",
      " [ 0.03225806+0.j          0.02222474+0.02338041j -0.00163384+0.03221666j\n",
      "  -0.02447607+0.02101202j -0.03209256-0.00326349j -0.01974535-0.02550889j\n",
      "   0.00488477-0.03188607j  0.02647624-0.01842801j  0.03159774+0.0064935j\n",
      "   0.01706336+0.02737562j -0.00808557+0.03122829j -0.02820473+0.0156549j\n",
      "  -0.03077869-0.00965687j -0.01420626-0.02896144j  0.0112034 -0.03025007j\n",
      "   0.0296438 -0.01272116j  0.0296438 +0.01272116j  0.0112034 +0.03025007j\n",
      "  -0.01420626+0.02896144j -0.03077869+0.00965687j -0.02820473-0.0156549j\n",
      "  -0.00808557-0.03122829j  0.01706336-0.02737562j  0.03159774-0.0064935j\n",
      "   0.02647624+0.01842801j  0.00488477+0.03188607j -0.01974535+0.02550889j\n",
      "  -0.03209256+0.00326349j -0.02447607-0.02101202j -0.00163384-0.03221666j\n",
      "   0.02222474-0.02338041j]\n",
      " [ 0.03225806+0.j          0.01706336+0.02737562j -0.01420626+0.02896144j\n",
      "  -0.03209256+0.00326349j -0.01974535-0.02550889j  0.0112034 -0.03025007j\n",
      "   0.03159774-0.0064935j   0.02222474+0.02338041j -0.00808557+0.03122829j\n",
      "  -0.03077869+0.00965687j -0.02447607-0.02101202j  0.00488477-0.03188607j\n",
      "   0.0296438 -0.01272116j  0.02647624+0.01842801j -0.00163384+0.03221666j\n",
      "  -0.02820473+0.0156549j  -0.02820473-0.0156549j  -0.00163384-0.03221666j\n",
      "   0.02647624-0.01842801j  0.0296438 +0.01272116j  0.00488477+0.03188607j\n",
      "  -0.02447607+0.02101202j -0.03077869-0.00965687j -0.00808557-0.03122829j\n",
      "   0.02222474-0.02338041j  0.03159774+0.0064935j   0.0112034 +0.03025007j\n",
      "  -0.01974535+0.02550889j -0.03209256-0.00326349j -0.01420626-0.02896144j\n",
      "   0.01706336-0.02737562j]\n",
      " [ 0.03225806+0.j          0.0112034 +0.03025007j -0.02447607+0.02101202j\n",
      "  -0.02820473-0.0156549j   0.00488477-0.03188607j  0.03159774-0.0064935j\n",
      "   0.01706336+0.02737562j -0.01974535+0.02550889j -0.03077869-0.00965687j\n",
      "  -0.00163384-0.03221666j  0.0296438 -0.01272116j  0.02222474+0.02338041j\n",
      "  -0.01420626+0.02896144j -0.03209256-0.00326349j -0.00808557-0.03122829j\n",
      "   0.02647624-0.01842801j  0.02647624+0.01842801j -0.00808557+0.03122829j\n",
      "  -0.03209256+0.00326349j -0.01420626-0.02896144j  0.02222474-0.02338041j\n",
      "   0.0296438 +0.01272116j -0.00163384+0.03221666j -0.03077869+0.00965687j\n",
      "  -0.01974535-0.02550889j  0.01706336-0.02737562j  0.03159774+0.0064935j\n",
      "   0.00488477+0.03188607j -0.02820473+0.0156549j  -0.02447607-0.02101202j\n",
      "   0.0112034 -0.03025007j]\n",
      " [ 0.03225806+0.j          0.00488477+0.03188607j -0.03077869+0.00965687j\n",
      "  -0.01420626-0.02896144j  0.02647624-0.01842801j  0.02222474+0.02338041j\n",
      "  -0.01974535+0.02550889j -0.02820473-0.0156549j   0.0112034 -0.03025007j\n",
      "   0.03159774+0.0064935j  -0.00163384+0.03221666j -0.03209256+0.00326349j\n",
      "  -0.00808557-0.03122829j  0.0296438 -0.01272116j  0.01706336+0.02737562j\n",
      "  -0.02447607+0.02101202j -0.02447607-0.02101202j  0.01706336-0.02737562j\n",
      "   0.0296438 +0.01272116j -0.00808557+0.03122829j -0.03209256-0.00326349j\n",
      "  -0.00163384-0.03221666j  0.03159774-0.0064935j   0.0112034 +0.03025007j\n",
      "  -0.02820473+0.0156549j  -0.01974535-0.02550889j  0.02222474-0.02338041j\n",
      "   0.02647624+0.01842801j -0.01420626+0.02896144j -0.03077869-0.00965687j\n",
      "   0.00488477-0.03188607j]\n",
      " [ 0.03225806+0.j         -0.00163384+0.03221666j -0.03209256-0.00326349j\n",
      "   0.00488477-0.03188607j  0.03159774+0.0064935j  -0.00808557+0.03122829j\n",
      "  -0.03077869-0.00965687j  0.0112034 -0.03025007j  0.0296438 +0.01272116j\n",
      "  -0.01420626+0.02896144j -0.02820473-0.0156549j   0.01706336-0.02737562j\n",
      "   0.02647624+0.01842801j -0.01974535+0.02550889j -0.02447607-0.02101202j\n",
      "   0.02222474-0.02338041j  0.02222474+0.02338041j -0.02447607+0.02101202j\n",
      "  -0.01974535-0.02550889j  0.02647624-0.01842801j  0.01706336+0.02737562j\n",
      "  -0.02820473+0.0156549j  -0.01420626-0.02896144j  0.0296438 -0.01272116j\n",
      "   0.0112034 +0.03025007j -0.03077869+0.00965687j -0.00808557-0.03122829j\n",
      "   0.03159774-0.0064935j   0.00488477+0.03188607j -0.03209256+0.00326349j\n",
      "  -0.00163384-0.03221666j]\n",
      " [ 0.03225806+0.j         -0.00808557+0.03122829j -0.02820473-0.0156549j\n",
      "   0.02222474-0.02338041j  0.01706336+0.02737562j -0.03077869+0.00965687j\n",
      "  -0.00163384-0.03221666j  0.03159774+0.0064935j  -0.01420626+0.02896144j\n",
      "  -0.02447607-0.02101202j  0.02647624-0.01842801j  0.0112034 +0.03025007j\n",
      "  -0.03209256+0.00326349j  0.00488477-0.03188607j  0.0296438 +0.01272116j\n",
      "  -0.01974535+0.02550889j -0.01974535-0.02550889j  0.0296438 -0.01272116j\n",
      "   0.00488477+0.03188607j -0.03209256-0.00326349j  0.0112034 -0.03025007j\n",
      "   0.02647624+0.01842801j -0.02447607+0.02101202j -0.01420626-0.02896144j\n",
      "   0.03159774-0.0064935j  -0.00163384+0.03221666j -0.03077869-0.00965687j\n",
      "   0.01706336-0.02737562j  0.02222474+0.02338041j -0.02820473+0.0156549j\n",
      "  -0.00808557-0.03122829j]\n",
      " [ 0.03225806+0.j         -0.01420626+0.02896144j -0.01974535-0.02550889j\n",
      "   0.03159774-0.0064935j  -0.00808557+0.03122829j -0.02447607-0.02101202j\n",
      "   0.0296438 -0.01272116j -0.00163384+0.03221666j -0.02820473-0.0156549j\n",
      "   0.02647624-0.01842801j  0.00488477+0.03188607j -0.03077869-0.00965687j\n",
      "   0.02222474-0.02338041j  0.0112034 +0.03025007j -0.03209256-0.00326349j\n",
      "   0.01706336-0.02737562j  0.01706336+0.02737562j -0.03209256+0.00326349j\n",
      "   0.0112034 -0.03025007j  0.02222474+0.02338041j -0.03077869+0.00965687j\n",
      "   0.00488477-0.03188607j  0.02647624+0.01842801j -0.02820473+0.0156549j\n",
      "  -0.00163384-0.03221666j  0.0296438 +0.01272116j -0.02447607+0.02101202j\n",
      "  -0.00808557-0.03122829j  0.03159774+0.0064935j  -0.01974535+0.02550889j\n",
      "  -0.01420626-0.02896144j]\n",
      " [ 0.03225806+0.j         -0.01974535+0.02550889j -0.00808557-0.03122829j\n",
      "   0.0296438 +0.01272116j -0.02820473+0.0156549j   0.00488477-0.03188607j\n",
      "   0.02222474+0.02338041j -0.03209256+0.00326349j  0.01706336-0.02737562j\n",
      "   0.0112034 +0.03025007j -0.03077869-0.00965687j  0.02647624-0.01842801j\n",
      "  -0.00163384+0.03221666j -0.02447607-0.02101202j  0.03159774-0.0064935j\n",
      "  -0.01420626+0.02896144j -0.01420626-0.02896144j  0.03159774+0.0064935j\n",
      "  -0.02447607+0.02101202j -0.00163384-0.03221666j  0.02647624+0.01842801j\n",
      "  -0.03077869+0.00965687j  0.0112034 -0.03025007j  0.01706336+0.02737562j\n",
      "  -0.03209256-0.00326349j  0.02222474-0.02338041j  0.00488477+0.03188607j\n",
      "  -0.02820473-0.0156549j   0.0296438 -0.01272116j -0.00808557+0.03122829j\n",
      "  -0.01974535-0.02550889j]\n",
      " [ 0.03225806+0.j         -0.02447607+0.02101202j  0.00488477-0.03188607j\n",
      "   0.01706336+0.02737562j -0.03077869-0.00965687j  0.0296438 -0.01272116j\n",
      "  -0.01420626+0.02896144j -0.00808557-0.03122829j  0.02647624+0.01842801j\n",
      "  -0.03209256+0.00326349j  0.02222474-0.02338041j -0.00163384+0.03221666j\n",
      "  -0.01974535-0.02550889j  0.03159774+0.0064935j  -0.02820473+0.0156549j\n",
      "   0.0112034 -0.03025007j  0.0112034 +0.03025007j -0.02820473-0.0156549j\n",
      "   0.03159774-0.0064935j  -0.01974535+0.02550889j -0.00163384-0.03221666j\n",
      "   0.02222474+0.02338041j -0.03209256-0.00326349j  0.02647624-0.01842801j\n",
      "  -0.00808557+0.03122829j -0.01420626-0.02896144j  0.0296438 +0.01272116j\n",
      "  -0.03077869+0.00965687j  0.01706336-0.02737562j  0.00488477+0.03188607j\n",
      "  -0.02447607-0.02101202j]\n",
      " [ 0.03225806+0.j         -0.02820473+0.0156549j   0.01706336-0.02737562j\n",
      "  -0.00163384+0.03221666j -0.01420626-0.02896144j  0.02647624+0.01842801j\n",
      "  -0.03209256-0.00326349j  0.0296438 -0.01272116j -0.01974535+0.02550889j\n",
      "   0.00488477-0.03188607j  0.0112034 +0.03025007j -0.02447607-0.02101202j\n",
      "   0.03159774+0.0064935j  -0.03077869+0.00965687j  0.02222474-0.02338041j\n",
      "  -0.00808557+0.03122829j -0.00808557-0.03122829j  0.02222474+0.02338041j\n",
      "  -0.03077869-0.00965687j  0.03159774-0.0064935j  -0.02447607+0.02101202j\n",
      "   0.0112034 -0.03025007j  0.00488477+0.03188607j -0.01974535-0.02550889j\n",
      "   0.0296438 +0.01272116j -0.03209256+0.00326349j  0.02647624-0.01842801j\n",
      "  -0.01420626+0.02896144j -0.00163384-0.03221666j  0.01706336+0.02737562j\n",
      "  -0.02820473-0.0156549j ]\n",
      " [ 0.03225806+0.j         -0.03077869+0.00965687j  0.02647624-0.01842801j\n",
      "  -0.01974535+0.02550889j  0.0112034 -0.03025007j -0.00163384+0.03221666j\n",
      "  -0.00808557-0.03122829j  0.01706336+0.02737562j -0.02447607-0.02101202j\n",
      "   0.0296438 +0.01272116j -0.03209256-0.00326349j  0.03159774-0.0064935j\n",
      "  -0.02820473+0.0156549j   0.02222474-0.02338041j -0.01420626+0.02896144j\n",
      "   0.00488477-0.03188607j  0.00488477+0.03188607j -0.01420626-0.02896144j\n",
      "   0.02222474+0.02338041j -0.02820473-0.0156549j   0.03159774+0.0064935j\n",
      "  -0.03209256+0.00326349j  0.0296438 -0.01272116j -0.02447607+0.02101202j\n",
      "   0.01706336-0.02737562j -0.00808557+0.03122829j -0.00163384-0.03221666j\n",
      "   0.0112034 +0.03025007j -0.01974535-0.02550889j  0.02647624+0.01842801j\n",
      "  -0.03077869-0.00965687j]\n",
      " [ 0.03225806+0.j         -0.03209256+0.00326349j  0.03159774-0.0064935j\n",
      "  -0.03077869+0.00965687j  0.0296438 -0.01272116j -0.02820473+0.0156549j\n",
      "   0.02647624-0.01842801j -0.02447607+0.02101202j  0.02222474-0.02338041j\n",
      "  -0.01974535+0.02550889j  0.01706336-0.02737562j -0.01420626+0.02896144j\n",
      "   0.0112034 -0.03025007j -0.00808557+0.03122829j  0.00488477-0.03188607j\n",
      "  -0.00163384+0.03221666j -0.00163384-0.03221666j  0.00488477+0.03188607j\n",
      "  -0.00808557-0.03122829j  0.0112034 +0.03025007j -0.01420626-0.02896144j\n",
      "   0.01706336+0.02737562j -0.01974535-0.02550889j  0.02222474+0.02338041j\n",
      "  -0.02447607-0.02101202j  0.02647624+0.01842801j -0.02820473-0.0156549j\n",
      "   0.0296438 +0.01272116j -0.03077869-0.00965687j  0.03159774+0.0064935j\n",
      "  -0.03209256-0.00326349j]\n",
      " [ 0.03225806+0.j         -0.03209256-0.00326349j  0.03159774+0.0064935j\n",
      "  -0.03077869-0.00965687j  0.0296438 +0.01272116j -0.02820473-0.0156549j\n",
      "   0.02647624+0.01842801j -0.02447607-0.02101202j  0.02222474+0.02338041j\n",
      "  -0.01974535-0.02550889j  0.01706336+0.02737562j -0.01420626-0.02896144j\n",
      "   0.0112034 +0.03025007j -0.00808557-0.03122829j  0.00488477+0.03188607j\n",
      "  -0.00163384-0.03221666j -0.00163384+0.03221666j  0.00488477-0.03188607j\n",
      "  -0.00808557+0.03122829j  0.0112034 -0.03025007j -0.01420626+0.02896144j\n",
      "   0.01706336-0.02737562j -0.01974535+0.02550889j  0.02222474-0.02338041j\n",
      "  -0.02447607+0.02101202j  0.02647624-0.01842801j -0.02820473+0.0156549j\n",
      "   0.0296438 -0.01272116j -0.03077869+0.00965687j  0.03159774-0.0064935j\n",
      "  -0.03209256+0.00326349j]\n",
      " [ 0.03225806+0.j         -0.03077869-0.00965687j  0.02647624+0.01842801j\n",
      "  -0.01974535-0.02550889j  0.0112034 +0.03025007j -0.00163384-0.03221666j\n",
      "  -0.00808557+0.03122829j  0.01706336-0.02737562j -0.02447607+0.02101202j\n",
      "   0.0296438 -0.01272116j -0.03209256+0.00326349j  0.03159774+0.0064935j\n",
      "  -0.02820473-0.0156549j   0.02222474+0.02338041j -0.01420626-0.02896144j\n",
      "   0.00488477+0.03188607j  0.00488477-0.03188607j -0.01420626+0.02896144j\n",
      "   0.02222474-0.02338041j -0.02820473+0.0156549j   0.03159774-0.0064935j\n",
      "  -0.03209256-0.00326349j  0.0296438 +0.01272116j -0.02447607-0.02101202j\n",
      "   0.01706336+0.02737562j -0.00808557-0.03122829j -0.00163384+0.03221666j\n",
      "   0.0112034 -0.03025007j -0.01974535+0.02550889j  0.02647624-0.01842801j\n",
      "  -0.03077869+0.00965687j]\n",
      " [ 0.03225806+0.j         -0.02820473-0.0156549j   0.01706336+0.02737562j\n",
      "  -0.00163384-0.03221666j -0.01420626+0.02896144j  0.02647624-0.01842801j\n",
      "  -0.03209256+0.00326349j  0.0296438 +0.01272116j -0.01974535-0.02550889j\n",
      "   0.00488477+0.03188607j  0.0112034 -0.03025007j -0.02447607+0.02101202j\n",
      "   0.03159774-0.0064935j  -0.03077869-0.00965687j  0.02222474+0.02338041j\n",
      "  -0.00808557-0.03122829j -0.00808557+0.03122829j  0.02222474-0.02338041j\n",
      "  -0.03077869+0.00965687j  0.03159774+0.0064935j  -0.02447607-0.02101202j\n",
      "   0.0112034 +0.03025007j  0.00488477-0.03188607j -0.01974535+0.02550889j\n",
      "   0.0296438 -0.01272116j -0.03209256-0.00326349j  0.02647624+0.01842801j\n",
      "  -0.01420626-0.02896144j -0.00163384+0.03221666j  0.01706336-0.02737562j\n",
      "  -0.02820473+0.0156549j ]\n",
      " [ 0.03225806+0.j         -0.02447607-0.02101202j  0.00488477+0.03188607j\n",
      "   0.01706336-0.02737562j -0.03077869+0.00965687j  0.0296438 +0.01272116j\n",
      "  -0.01420626-0.02896144j -0.00808557+0.03122829j  0.02647624-0.01842801j\n",
      "  -0.03209256-0.00326349j  0.02222474+0.02338041j -0.00163384-0.03221666j\n",
      "  -0.01974535+0.02550889j  0.03159774-0.0064935j  -0.02820473-0.0156549j\n",
      "   0.0112034 +0.03025007j  0.0112034 -0.03025007j -0.02820473+0.0156549j\n",
      "   0.03159774+0.0064935j  -0.01974535-0.02550889j -0.00163384+0.03221666j\n",
      "   0.02222474-0.02338041j -0.03209256+0.00326349j  0.02647624+0.01842801j\n",
      "  -0.00808557-0.03122829j -0.01420626+0.02896144j  0.0296438 -0.01272116j\n",
      "  -0.03077869-0.00965687j  0.01706336+0.02737562j  0.00488477-0.03188607j\n",
      "  -0.02447607+0.02101202j]\n",
      " [ 0.03225806+0.j         -0.01974535-0.02550889j -0.00808557+0.03122829j\n",
      "   0.0296438 -0.01272116j -0.02820473-0.0156549j   0.00488477+0.03188607j\n",
      "   0.02222474-0.02338041j -0.03209256-0.00326349j  0.01706336+0.02737562j\n",
      "   0.0112034 -0.03025007j -0.03077869+0.00965687j  0.02647624+0.01842801j\n",
      "  -0.00163384-0.03221666j -0.02447607+0.02101202j  0.03159774+0.0064935j\n",
      "  -0.01420626-0.02896144j -0.01420626+0.02896144j  0.03159774-0.0064935j\n",
      "  -0.02447607-0.02101202j -0.00163384+0.03221666j  0.02647624-0.01842801j\n",
      "  -0.03077869-0.00965687j  0.0112034 +0.03025007j  0.01706336-0.02737562j\n",
      "  -0.03209256+0.00326349j  0.02222474+0.02338041j  0.00488477-0.03188607j\n",
      "  -0.02820473+0.0156549j   0.0296438 +0.01272116j -0.00808557-0.03122829j\n",
      "  -0.01974535+0.02550889j]\n",
      " [ 0.03225806+0.j         -0.01420626-0.02896144j -0.01974535+0.02550889j\n",
      "   0.03159774+0.0064935j  -0.00808557-0.03122829j -0.02447607+0.02101202j\n",
      "   0.0296438 +0.01272116j -0.00163384-0.03221666j -0.02820473+0.0156549j\n",
      "   0.02647624+0.01842801j  0.00488477-0.03188607j -0.03077869+0.00965687j\n",
      "   0.02222474+0.02338041j  0.0112034 -0.03025007j -0.03209256+0.00326349j\n",
      "   0.01706336+0.02737562j  0.01706336-0.02737562j -0.03209256-0.00326349j\n",
      "   0.0112034 +0.03025007j  0.02222474-0.02338041j -0.03077869-0.00965687j\n",
      "   0.00488477+0.03188607j  0.02647624-0.01842801j -0.02820473-0.0156549j\n",
      "  -0.00163384+0.03221666j  0.0296438 -0.01272116j -0.02447607-0.02101202j\n",
      "  -0.00808557+0.03122829j  0.03159774-0.0064935j  -0.01974535-0.02550889j\n",
      "  -0.01420626+0.02896144j]\n",
      " [ 0.03225806+0.j         -0.00808557-0.03122829j -0.02820473+0.0156549j\n",
      "   0.02222474+0.02338041j  0.01706336-0.02737562j -0.03077869-0.00965687j\n",
      "  -0.00163384+0.03221666j  0.03159774-0.0064935j  -0.01420626-0.02896144j\n",
      "  -0.02447607+0.02101202j  0.02647624+0.01842801j  0.0112034 -0.03025007j\n",
      "  -0.03209256-0.00326349j  0.00488477+0.03188607j  0.0296438 -0.01272116j\n",
      "  -0.01974535-0.02550889j -0.01974535+0.02550889j  0.0296438 +0.01272116j\n",
      "   0.00488477-0.03188607j -0.03209256+0.00326349j  0.0112034 +0.03025007j\n",
      "   0.02647624-0.01842801j -0.02447607-0.02101202j -0.01420626+0.02896144j\n",
      "   0.03159774+0.0064935j  -0.00163384-0.03221666j -0.03077869+0.00965687j\n",
      "   0.01706336+0.02737562j  0.02222474-0.02338041j -0.02820473-0.0156549j\n",
      "  -0.00808557+0.03122829j]\n",
      " [ 0.03225806+0.j         -0.00163384-0.03221666j -0.03209256+0.00326349j\n",
      "   0.00488477+0.03188607j  0.03159774-0.0064935j  -0.00808557-0.03122829j\n",
      "  -0.03077869+0.00965687j  0.0112034 +0.03025007j  0.0296438 -0.01272116j\n",
      "  -0.01420626-0.02896144j -0.02820473+0.0156549j   0.01706336+0.02737562j\n",
      "   0.02647624-0.01842801j -0.01974535-0.02550889j -0.02447607+0.02101202j\n",
      "   0.02222474+0.02338041j  0.02222474-0.02338041j -0.02447607-0.02101202j\n",
      "  -0.01974535+0.02550889j  0.02647624+0.01842801j  0.01706336-0.02737562j\n",
      "  -0.02820473-0.0156549j  -0.01420626+0.02896144j  0.0296438 +0.01272116j\n",
      "   0.0112034 -0.03025007j -0.03077869-0.00965687j -0.00808557+0.03122829j\n",
      "   0.03159774+0.0064935j   0.00488477-0.03188607j -0.03209256-0.00326349j\n",
      "  -0.00163384+0.03221666j]\n",
      " [ 0.03225806+0.j          0.00488477-0.03188607j -0.03077869-0.00965687j\n",
      "  -0.01420626+0.02896144j  0.02647624+0.01842801j  0.02222474-0.02338041j\n",
      "  -0.01974535-0.02550889j -0.02820473+0.0156549j   0.0112034 +0.03025007j\n",
      "   0.03159774-0.0064935j  -0.00163384-0.03221666j -0.03209256-0.00326349j\n",
      "  -0.00808557+0.03122829j  0.0296438 +0.01272116j  0.01706336-0.02737562j\n",
      "  -0.02447607-0.02101202j -0.02447607+0.02101202j  0.01706336+0.02737562j\n",
      "   0.0296438 -0.01272116j -0.00808557-0.03122829j -0.03209256+0.00326349j\n",
      "  -0.00163384+0.03221666j  0.03159774+0.0064935j   0.0112034 -0.03025007j\n",
      "  -0.02820473-0.0156549j  -0.01974535+0.02550889j  0.02222474+0.02338041j\n",
      "   0.02647624-0.01842801j -0.01420626-0.02896144j -0.03077869+0.00965687j\n",
      "   0.00488477+0.03188607j]\n",
      " [ 0.03225806+0.j          0.0112034 -0.03025007j -0.02447607-0.02101202j\n",
      "  -0.02820473+0.0156549j   0.00488477+0.03188607j  0.03159774+0.0064935j\n",
      "   0.01706336-0.02737562j -0.01974535-0.02550889j -0.03077869+0.00965687j\n",
      "  -0.00163384+0.03221666j  0.0296438 +0.01272116j  0.02222474-0.02338041j\n",
      "  -0.01420626-0.02896144j -0.03209256+0.00326349j -0.00808557+0.03122829j\n",
      "   0.02647624+0.01842801j  0.02647624-0.01842801j -0.00808557-0.03122829j\n",
      "  -0.03209256-0.00326349j -0.01420626+0.02896144j  0.02222474+0.02338041j\n",
      "   0.0296438 -0.01272116j -0.00163384-0.03221666j -0.03077869-0.00965687j\n",
      "  -0.01974535+0.02550889j  0.01706336+0.02737562j  0.03159774-0.0064935j\n",
      "   0.00488477-0.03188607j -0.02820473-0.0156549j  -0.02447607+0.02101202j\n",
      "   0.0112034 +0.03025007j]\n",
      " [ 0.03225806+0.j          0.01706336-0.02737562j -0.01420626-0.02896144j\n",
      "  -0.03209256-0.00326349j -0.01974535+0.02550889j  0.0112034 +0.03025007j\n",
      "   0.03159774+0.0064935j   0.02222474-0.02338041j -0.00808557-0.03122829j\n",
      "  -0.03077869-0.00965687j -0.02447607+0.02101202j  0.00488477+0.03188607j\n",
      "   0.0296438 +0.01272116j  0.02647624-0.01842801j -0.00163384-0.03221666j\n",
      "  -0.02820473-0.0156549j  -0.02820473+0.0156549j  -0.00163384+0.03221666j\n",
      "   0.02647624+0.01842801j  0.0296438 -0.01272116j  0.00488477-0.03188607j\n",
      "  -0.02447607-0.02101202j -0.03077869+0.00965687j -0.00808557+0.03122829j\n",
      "   0.02222474+0.02338041j  0.03159774-0.0064935j   0.0112034 -0.03025007j\n",
      "  -0.01974535-0.02550889j -0.03209256+0.00326349j -0.01420626+0.02896144j\n",
      "   0.01706336+0.02737562j]\n",
      " [ 0.03225806+0.j          0.02222474-0.02338041j -0.00163384-0.03221666j\n",
      "  -0.02447607-0.02101202j -0.03209256+0.00326349j -0.01974535+0.02550889j\n",
      "   0.00488477+0.03188607j  0.02647624+0.01842801j  0.03159774-0.0064935j\n",
      "   0.01706336-0.02737562j -0.00808557-0.03122829j -0.02820473-0.0156549j\n",
      "  -0.03077869+0.00965687j -0.01420626+0.02896144j  0.0112034 +0.03025007j\n",
      "   0.0296438 +0.01272116j  0.0296438 -0.01272116j  0.0112034 -0.03025007j\n",
      "  -0.01420626-0.02896144j -0.03077869-0.00965687j -0.02820473+0.0156549j\n",
      "  -0.00808557+0.03122829j  0.01706336+0.02737562j  0.03159774+0.0064935j\n",
      "   0.02647624-0.01842801j  0.00488477-0.03188607j -0.01974535-0.02550889j\n",
      "  -0.03209256-0.00326349j -0.02447607+0.02101202j -0.00163384+0.03221666j\n",
      "   0.02222474+0.02338041j]\n",
      " [ 0.03225806+0.j          0.02647624-0.01842801j  0.0112034 -0.03025007j\n",
      "  -0.00808557-0.03122829j -0.02447607-0.02101202j -0.03209256-0.00326349j\n",
      "  -0.02820473+0.0156549j  -0.01420626+0.02896144j  0.00488477+0.03188607j\n",
      "   0.02222474+0.02338041j  0.03159774+0.0064935j   0.0296438 -0.01272116j\n",
      "   0.01706336-0.02737562j -0.00163384-0.03221666j -0.01974535-0.02550889j\n",
      "  -0.03077869-0.00965687j -0.03077869+0.00965687j -0.01974535+0.02550889j\n",
      "  -0.00163384+0.03221666j  0.01706336+0.02737562j  0.0296438 +0.01272116j\n",
      "   0.03159774-0.0064935j   0.02222474-0.02338041j  0.00488477-0.03188607j\n",
      "  -0.01420626-0.02896144j -0.02820473-0.0156549j  -0.03209256+0.00326349j\n",
      "  -0.02447607+0.02101202j -0.00808557+0.03122829j  0.0112034 +0.03025007j\n",
      "   0.02647624+0.01842801j]\n",
      " [ 0.03225806+0.j          0.0296438 -0.01272116j  0.02222474-0.02338041j\n",
      "   0.0112034 -0.03025007j -0.00163384-0.03221666j -0.01420626-0.02896144j\n",
      "  -0.02447607-0.02101202j -0.03077869-0.00965687j -0.03209256+0.00326349j\n",
      "  -0.02820473+0.0156549j  -0.01974535+0.02550889j -0.00808557+0.03122829j\n",
      "   0.00488477+0.03188607j  0.01706336+0.02737562j  0.02647624+0.01842801j\n",
      "   0.03159774+0.0064935j   0.03159774-0.0064935j   0.02647624-0.01842801j\n",
      "   0.01706336-0.02737562j  0.00488477-0.03188607j -0.00808557-0.03122829j\n",
      "  -0.01974535-0.02550889j -0.02820473-0.0156549j  -0.03209256-0.00326349j\n",
      "  -0.03077869+0.00965687j -0.02447607+0.02101202j -0.01420626+0.02896144j\n",
      "  -0.00163384+0.03221666j  0.0112034 +0.03025007j  0.02222474+0.02338041j\n",
      "   0.0296438 +0.01272116j]\n",
      " [ 0.03225806+0.j          0.03159774-0.0064935j   0.0296438 -0.01272116j\n",
      "   0.02647624-0.01842801j  0.02222474-0.02338041j  0.01706336-0.02737562j\n",
      "   0.0112034 -0.03025007j  0.00488477-0.03188607j -0.00163384-0.03221666j\n",
      "  -0.00808557-0.03122829j -0.01420626-0.02896144j -0.01974535-0.02550889j\n",
      "  -0.02447607-0.02101202j -0.02820473-0.0156549j  -0.03077869-0.00965687j\n",
      "  -0.03209256-0.00326349j -0.03209256+0.00326349j -0.03077869+0.00965687j\n",
      "  -0.02820473+0.0156549j  -0.02447607+0.02101202j -0.01974535+0.02550889j\n",
      "  -0.01420626+0.02896144j -0.00808557+0.03122829j -0.00163384+0.03221666j\n",
      "   0.00488477+0.03188607j  0.0112034 +0.03025007j  0.01706336+0.02737562j\n",
      "   0.02222474+0.02338041j  0.02647624+0.01842801j  0.0296438 +0.01272116j\n",
      "   0.03159774+0.0064935j ]]\n"
     ]
    }
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "source": [
    "H_star = np.transpose(np.conjugate(H))\n",
    "y = np.array([x(n) for n in range(N)])\n",
    "print(y)"
   ],
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "[ 0.00000000e+00  5.87785252e-01  9.51056516e-01  9.51056516e-01\n",
      "  5.87785252e-01  1.22464680e-16 -5.87785252e-01 -9.51056516e-01\n",
      " -9.51056516e-01 -5.87785252e-01 -2.44929360e-16  5.87785252e-01\n",
      "  9.51056516e-01  9.51056516e-01  5.87785252e-01  3.67394040e-16\n",
      " -5.87785252e-01 -9.51056516e-01 -9.51056516e-01 -5.87785252e-01\n",
      " -4.89858720e-16  5.87785252e-01  9.51056516e-01  9.51056516e-01\n",
      "  5.87785252e-01  6.12323400e-16 -5.87785252e-01 -9.51056516e-01\n",
      " -9.51056516e-01 -5.87785252e-01 -7.34788079e-16]\n"
     ]
    }
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "source": [
    "theta_est = N * np.dot(H_star, y)\n",
    "print(theta_est)"
   ],
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "[ 1.20116332e-15 +0.j          3.52817744e-02 -0.34695401j\n",
      "  2.16641118e-01 -1.05418789j  4.48444570e+00-14.29296181j\n",
      " -7.61434999e-01 +1.77435337j -4.94313619e-01 +0.89058251j\n",
      " -4.15458729e-01 +0.59690584j -3.79247580e-01 +0.44177055j\n",
      " -3.59183665e-01 +0.34142953j -3.46860552e-01 +0.26849005j\n",
      " -3.38816587e-01 +0.21118599j -3.33388502e-01 +0.16353487j\n",
      " -3.29693996e-01 +0.12210525j -3.27235688e-01 +0.08472719j\n",
      " -3.25726729e-01 +0.0498995j  -3.25007945e-01 +0.01648254j\n",
      " -3.25007945e-01 -0.01648254j -3.25726729e-01 -0.0498995j\n",
      " -3.27235688e-01 -0.08472719j -3.29693996e-01 -0.12210525j\n",
      " -3.33388502e-01 -0.16353487j -3.38816587e-01 -0.21118599j\n",
      " -3.46860552e-01 -0.26849005j -3.59183665e-01 -0.34142953j\n",
      " -3.79247580e-01 -0.44177055j -4.15458729e-01 -0.59690584j\n",
      " -4.94313619e-01 -0.89058251j -7.61434999e-01 -1.77435337j\n",
      "  4.48444570e+00+14.29296181j  2.16641118e-01 +1.05418789j\n",
      "  3.52817744e-02 +0.34695401j]\n"
     ]
    }
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "source": [
    "theta_est2 = sci.fft(y)\n",
    "print(theta_est2)"
   ],
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "[ 9.99200722e-16 +0.j          3.52817744e-02 -0.34695401j\n",
      "  2.16641118e-01 -1.05418789j  4.48444570e+00-14.29296181j\n",
      " -7.61434999e-01 +1.77435337j -4.94313619e-01 +0.89058251j\n",
      " -4.15458729e-01 +0.59690584j -3.79247580e-01 +0.44177055j\n",
      " -3.59183665e-01 +0.34142953j -3.46860552e-01 +0.26849005j\n",
      " -3.38816587e-01 +0.21118599j -3.33388502e-01 +0.16353487j\n",
      " -3.29693996e-01 +0.12210525j -3.27235688e-01 +0.08472719j\n",
      " -3.25726729e-01 +0.0498995j  -3.25007945e-01 +0.01648254j\n",
      " -3.25007945e-01 -0.01648254j -3.25726729e-01 -0.0498995j\n",
      " -3.27235688e-01 -0.08472719j -3.29693996e-01 -0.12210525j\n",
      " -3.33388502e-01 -0.16353487j -3.38816587e-01 -0.21118599j\n",
      " -3.46860552e-01 -0.26849005j -3.59183665e-01 -0.34142953j\n",
      " -3.79247580e-01 -0.44177055j -4.15458729e-01 -0.59690584j\n",
      " -4.94313619e-01 -0.89058251j -7.61434999e-01 -1.77435337j\n",
      "  4.48444570e+00+14.29296181j  2.16641118e-01 +1.05418789j\n",
      "  3.52817744e-02 +0.34695401j]\n"
     ]
    }
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "source": [
    "x_data = np.linspace(0, N, N)\n",
    "plt.plot(x_data, theta_est2 - theta_est, label=\"fft(y) - theta\")\n",
    "plt.savefig(\"./q6_figure.png\", dpi=300)"
   ],
   "outputs": [
    {
     "output_type": "stream",
     "name": "stderr",
     "text": [
      "/home/leitianjian/.local/lib/python3.6/site-packages/numpy/core/_asarray.py:83: ComplexWarning: Casting complex values to real discards the imaginary part\n",
      "  return array(a, dtype, copy=False, order=order)\n"
     ]
    },
    {
     "output_type": "display_data",
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     }
    }
   ],
   "metadata": {}
  }
 ],
 "metadata": {
  "orig_nbformat": 4,
  "language_info": {
   "name": "python",
   "version": "3.6.9",
   "mimetype": "text/x-python",
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "pygments_lexer": "ipython3",
   "nbconvert_exporter": "python",
   "file_extension": ".py"
  },
  "kernelspec": {
   "name": "python3",
   "display_name": "Python 3.6.9 64-bit"
  },
  "interpreter": {
   "hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}